package reflect_field;

import java.lang.reflect.Field;

/**
 * @author 宋鑫宇
 * @version 1.0
 */
public class Test {
    @org.junit.jupiter.api.Test
    public void getFields() {
        //获取类对象
        Class c = AAA.class;
        //获取类中的全部成员变量
        Field[] fields = c.getDeclaredFields();
        //遍历
        for (Field field : fields) {
            System.out.println(field.getName() + " " + field.getType());
        }
    }

    //定位某一个成员变量
    @org.junit.jupiter.api.Test
    public void getField() throws Exception{
        //获取类对象
        Class c = AAA.class;
        //获取类中的某一个成员变量（用变量名获取）
        Field ageF = c.getDeclaredField("age");
        System.out.println(ageF.getName() + " " + ageF.getType());
        //如果成员变量权限不是public的，需要暴力打开权限
        ageF.setAccessible(true);
        //给成员变量赋值
        AAA aaa = new AAA();
        ageF.set(aaa,18);
        System.out.println(aaa);
        //获取成员变量
        int age = (int) ageF.get(aaa);
        System.out.println(age);
    }
}
